home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / boosters.arc / CENTER.ASM < prev    next >
Assembly Source File  |  1980-01-01  |  1KB  |  58 lines

  1. ;**********************************************************************
  2. ;       type
  3. ;           AnyString = string[255];
  4. ;       var
  5. ;           C : char;
  6. ;           N : integer;
  7. ;
  8. ;       Function center(S : AnyString; N : integer; C : Char); AnyString;
  9. ;                                          external 'B:center';
  10. ;**********************************************************************
  11. center  proc    near
  12.         push    bp
  13.     mov    bp,sp
  14.     push    ds
  15.     lea    si,[bp+9]    ; first character of string to center
  16.     lea    bx,[bp+264]    ; length byte of centered string
  17.     mov    cx,[bp+6]    ; get N
  18.     mov    ss:[bx],cl    ; set length of centered string
  19.     inc    bx
  20.     mov    cl,[bp+8]    ; length of string to center
  21.     xor    ch,ch
  22.     mov    ax,[bp+6]    ; get N again
  23.     sub    ax,cx
  24.     ja    cen1
  25.     xor    ax,ax
  26.     jmp    cen2
  27. ;
  28. cen1:    shr    ax,1
  29.     push    ax
  30.     mov    di,bx
  31.     mov    ax,[bp+4]
  32.     mov    cx,[bp+6]
  33.     push    ss
  34.     pop    es
  35.     cld
  36. rep    stosb
  37.         pop     ax
  38. ;
  39. cen2:    add    bx,ax
  40.     mov    di,bx
  41.     push    ss
  42.     pop    ds
  43.     mov    cl,[bp+8]    ; length of string to center
  44.     xor    ch,ch
  45.     cld
  46. rep    movsb
  47. ;
  48.     pop    ds
  49.         mov     sp,bp
  50.         pop     bp
  51.     pop    bx
  52.     mov    ax,cs:[bx]
  53.     cmp    ax,0FFB1h
  54.     jnz    cen3
  55.     add    bx,5
  56. cen3:    push    bx
  57.         ret     260
  58. center  endp